package strain.solver;

import strain.domain.Domain;
import strain.expression.BoolExpression;
import strain.expression.Expression;
import strain.expression.IntExpression;
import strain.expression.RealExpression;

public class AnyExpression {
    private final Expression<?,?> expression;
    
    
    public <T, D extends Domain<T>, E extends Expression<T,D>> AnyExpression(final E expression){
        this.expression = expression;
    }
    
    public BoolExpression asBoolExpression(){
        return (BoolExpression) this.expression;
    }
    
    public IntExpression asIntExpression(){
        return (IntExpression) this.expression;
    }
    
    public RealExpression asRealExpression(){
        return (RealExpression) this.expression;
    }
    
}
